    public function fiscal(${$entity->singular}_id)
    {
        // chequeo y obtengo el usuario loggeado
        $data['logueado'] = $this->getUsuarioLogueado();

        // valido permisos
        $urlPermisosInvalidos = base_url() . 'usuarios/dashboard/'; 
        $permisosRequeridos   = array();
        // Ejemplo: 
        // $permisosRequeridos = array('tickets-crear','tickets');

        $this->validarPermisos($data['logueado'], $permisosRequeridos, $urlPermisosInvalidos);
        
        // Message Handler
        $data['msg'] = new PwMsgHandler();
        
        ${$entity->singular} = new {$entity->singular|capitalize:true}(${$entity->singular}_id);
        
        $this->session->set_userdata('titulo',          "Modificación de {literal}{${/literal}{$entity->singular}->prestador->nombre{literal}}{/literal}");
        $this->session->set_userdata('sidebar',         "{$entity->singular}_sidebar.html");
        $this->session->set_userdata('basicos_url',     "{$entity->plural}/basic/{literal}{${/literal}{$entity->singular}->id{literal}}{/literal}/");
        $this->session->set_userdata('especificos_url', "{$entity->plural}/update/{literal}{${/literal}{$entity->singular}->id{literal}}{/literal}/");
        
        redirect(base_url() . 'entidades/update/' . ${$entity->singular}->prestador->entidad->id . '/');
    } // function fiscal

    public function basic(${$entity->singular}_id)
    { 
        // chequeo y obtengo el usuario loggeado
        $data['logueado'] = $this->getUsuarioLogueado();

        // valido permisos
        $urlPermisosInvalidos = base_url() . 'usuarios/dashboard/'; 
        $permisosRequeridos   = array();
        // Ejemplo: 
        // $permisosRequeridos = array('tickets-crear','tickets');

        $this->validarPermisos($data['logueado'], $permisosRequeridos, $urlPermisosInvalidos);
        
        // Message Handler
        $data['msg'] = new PwMsgHandler();
        
        ${$entity->singular} = new {$entity->singular|capitalize:true}(${$entity->singular}_id);
        
        $this->session->set_userdata('titulo',          "Modificación de {literal}{${/literal}{$entity->singular}->prestador->nombre{literal}}{/literal}");
        $this->session->set_userdata('sidebar',         "{$entity->singular}_sidebar.html");
        $this->session->set_userdata('fiscales_url',    "{$entity->plural}/fiscal/{literal}{${/literal}{$entity->singular}->id{literal}}{/literal}/");
        $this->session->set_userdata('especificos_url', "{$entity->plural}/update/{literal}{${/literal}{$entity->singular}->id{literal}}{/literal}/");
        
        redirect(base_url() . 'prestadores/update_sub/' . ${$entity->singular}->prestador->id . '/');
    } // function basic
    
    public function get_by_entidad($entidad_id) 
    {
        // chequeo y obtengo el usuario loggeado
        $data['logueado'] = $this->getUsuarioLogueado();

        // valido permisos
        $urlPermisosInvalidos = base_url() . 'usuarios/dashboard/'; 
        $permisosRequeridos   = array();
        // Ejemplo: 
        // $permisosRequeridos = array('tickets-crear','tickets');

        $this->validarPermisos($data['logueado'], $permisosRequeridos, $urlPermisosInvalidos);
        
        // Message Handler
        $data['msg'] = new PwMsgHandler();
        
        $data['entidad'] = new Entidad($entidad_id);
        
        // traemos {$entity->plural} de la entidad elegida (para saber cuantos son)
        ${$entity->singular} = new {$entity->singular|capitalize:true}();
        ${$entity->singular}->where_related('prestador', 'entidad_id', $entidad_id);

        if (${$entity->singular}->count()) {
            $data['conjunto'] = new {$entity->singular|capitalize:true}();
            $data['conjunto']->where_related('prestador', 'entidad_id', $entidad_id)->get();
            
            $data['plural_entidad'] = '{$entity->plural}';
            $data['create_caption'] = 'Nuevo {$entity->singular}';
            
            $vista = $this->smartyview->smarty->fetch('prestador_select_create.html', $data);
            
            die(json_encode(array('type' => 'html', 'content' => $vista)));
        }
        else {

            $data['msg']->info = 'Se encontraron datos para el cuit ' . $data['entidad']->cuit . ' a nombre de ' . $data['entidad']->razon_social . '. Continuá con la creación';
            $data['msg']->persistInfo();
            
            redirect(base_url() . "prestadores/create_sub/{$entity->plural}/{literal}{$entidad_id}{/literal}/");
        }
    } // function get_by_entidad
    
    public function create_and_update($prestador_id)
    {
        // chequeo y obtengo el usuario loggeado
        $data['logueado'] = $this->getUsuarioLogueado();

        // valido permisos
        $urlPermisosInvalidos = base_url() . 'usuarios/dashboard/'; 
        $permisosRequeridos   = array();
        // Ejemplo: 
        // $permisosRequeridos = array('tickets-crear','tickets');

        $this->validarPermisos($data['logueado'], $permisosRequeridos, $urlPermisosInvalidos);

        // Message Handler
        $data['msg'] = new PwMsgHandler();
        
    	${$entity->singular} = new {$entity->singular|capitalize:true}();
        $prestador = new Prestador($prestador_id);
        
        ${$entity->singular}->save($prestador);
        
        die(json_encode(array('type' => 'redirect', 'content' => base_url() . '{$entity->plural}/update/' . ${$entity->singular}->id . '/')));
    } // function create_and_update
    
    public function create()
    {
        // chequeo y obtengo el usuario loggeado
        $data['logueado'] = $this->getUsuarioLogueado();

        // valido permisos
        $urlPermisosInvalidos = base_url() . 'usuarios/dashboard/'; 
        $permisosRequeridos   = array();
        // Ejemplo: 
        // $permisosRequeridos = array('tickets-crear','tickets');

        $this->validarPermisos($data['logueado'], $permisosRequeridos, $urlPermisosInvalidos);

        // Message Handler
        $data['msg'] = new PwMsgHandler();
        
        $data['title']                = 'Nuevo {$entity->singular}';
        $data['sidebar']              = '{$entity->singular}_sidebar.html';
        $data['{$entity->singular}_create_class'] = 'active';
        
        // Pestanas
        $data['fiscales_class']    = 'active no-link';
        $data['basicos_class']     = 'disabled no-link';
        $data['especificos_class'] = 'disabled no-link';
        $data['plural_entidad']    = '{$entity->plural}';

        // prepare object attributes
        $this->createPrepare($data);

        // load view
        $this->smartyview->render('prestador_create_cuit.html', $data);

    } // function create
    
    public function read($id)
    {
        // chequeo y obtengo el usuario loggeado
        $data['logueado'] = $this->getUsuarioLogueado();

        // valido permisos
        $urlPermisosInvalidos = base_url() . 'usuarios/dashboard/'; 
        $permisosRequeridos   = array();
        // Ejemplo: 
        // $permisosRequeridos = array('tickets-crear','tickets');

        $this->validarPermisos($data['logueado'], $permisosRequeridos, $urlPermisosInvalidos);

        // get the object to view
        $data['{$entity->singular}'] = new {$entity->singular|capitalize:true}($id);

        // Message Handler
        $data['msg'] = new PwMsgHandler();

        // purpose related actions to properly read the attributes
        $this->readPrepare($data);

        // laod view
        $this->smartyview->render('{$entity->singular}_read.html', $data);

    } // function read
    
    public function update($id)
    {
        // chequeo y obtengo el usuario loggeado
        $data['logueado'] = $this->getUsuarioLogueado();

        // valido permisos
        $urlPermisosInvalidos = base_url() . 'usuarios/dashboard/'; 
        $permisosRequeridos   = array();
        // Ejemplo: 
        // $permisosRequeridos = array('tickets-crear','tickets');

        $this->validarPermisos($data['logueado'], $permisosRequeridos, $urlPermisosInvalidos);

        // get object to edit
        $data['{$entity->singular}'] = new {$entity->singular|capitalize:true}($id);

        // Message Handler
        $data['msg'] = new PwMsgHandler();

        $data['fiscales_url'] = "{$entity->plural}/fiscal/{literal}{$id}{/literal}/";
        $data['basicos_url']  = "{$entity->plural}/basic/{literal}{$id}{/literal}/";
        
        $data['especificos_class'] = 'active';
        
        // prepare object attributes
        $this->updatePrepare($data);

        // if posting, try to save modifications
        if ($this->input->server('REQUEST_METHOD') === 'POST') {
            $this->update_save($data);
        }

        // load view
        $this->smartyview->render('{$entity->singular}_update.html', $data);

    } // function update

    private function update_save($data) 
    {
        // assignUpdatePost is defined on parent class and 
        // will assign all posting values to your attributes's class 
        // based on purposes definitions
        if ($this->assignUpdatePost($data)) {

            // You could customize attributes here

            // Saving Object and its relationships (feel free to edit)
            if ($this->saveEntity($data)) { 
            
                // post processing object attributes
                $this->afterUpdateSuccess($data);

                // Show success message in next view
                $data['msg']->success = 'Cambios guardados correctamente';
                $data['msg']->persistSuccess();

                // redirects to edit
                redirect(base_url() . '{$entity->plural}/update/' . $data['{$entity->singular}']->id . '/');
            }
            else { 
                // revert attributes changes if necesary
                $this->revertOnUpdateError($data);

                // Append model's errors
                $data['msg']->error .= $data['{$entity->singular}']->error->string;
            }
        } // if assignUpdatePost
    } // function update_save
    
    public function delete($id)
    {
        // chequeo y obtengo el usuario loggeado
        $data['logueado'] = $this->getUsuarioLogueado();

        // valido permisos
        $urlPermisosInvalidos = base_url() . 'usuarios/dashboard/'; 
        $permisosRequeridos   = array();
        // Ejemplo: 
        // $permisosRequeridos = array('tickets-crear','tickets');

        $this->validarPermisos($data['logueado'], $permisosRequeridos, $urlPermisosInvalidos);

        // get object to delete
        $data['{$entity->singular}'] = new {$entity->singular|capitalize:true}($id);
        
        if ($data['{$entity->singular}']->delete()) {

            // delete related actions based on purpose
            $this->afterDeleteSuccess($data);

            // Show success message in next view
            $data['msg']          = new PwMsgHandler();
            $data['msg']->success = '{$entity->singular|capitalize:true} borrado correctamente';
            $data['msg']->persistSuccess();

            // Redirijo al listado
            redirect(base_url() . '{$entity->plural}/browse/');
        }
    } // function delete

    public function browse()
    {
    	// chequeo y obtengo el usuario loggeado
        $data['logueado'] = $this->getUsuarioLogueado();

        // valido permisos
        $urlPermisosInvalidos = base_url() . 'usuarios/dashboard/'; 
        $permisosRequeridos   = array();
        // Ejemplo: 
        // $permisosRequeridos = array('tickets-crear','tickets');

        $this->validarPermisos($data['logueado'], $permisosRequeridos, $urlPermisosInvalidos);

        // Lista de objetos
        $data['{$entity->plural}'] = new {$entity->singular|capitalize:true}();
        $data['{$entity->plural}']->get()->all;
            
        $data['msg'] = new PwMsgHandler();
        
        $this->smartyview->render('{$entity->singular}_browse.html', $data);
    } // function browse
    
    public function index()
    {
    	$this->browse();
    }